home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 February
/
EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso
/
earcd
/
comm2
/
zpont311.lha
/
zpoint-3.11
/
Rexx
/
RequestFC.zprx
< prev
next >
Wrap
Text File
|
1995-03-09
|
6KB
|
252 lines
/*
$VER: RequestFC.zprx 1.0 (1.9.94) Copyright (c) Ralph Seichter.
Ein ARexx-Skript für "Zodiac's Point" (basierend auf dem Skript
'RequestFC.mdmrexx 1.2' von Jürgen Kohrmeyer).
Das Skript benötigt Jürgen Kohrmeyer's "rexxtricks.library" und
Ralph Seichter's "Zodiac's Point" (V37.155 oder besser; ältere
ZP-Versionen sind dafür leider nicht geeignet).
FUNKTIONSBESCHREIBUNG:
Dieses Script durchsucht eine 'POINT-INFO' oder 'Re: INHALT' Nachricht
von 'MAPS' der Boxsoftware 'Fastcall' nach requestbaren Dateien. Alle
gefundenen Dateien werden alphabetisch sortiert in einem Fenster auf
dem Screen von 'MicroDot' dargestellt. Hier können Sie die gewünschten
Dateien auswählen und requesten, Multiselect ist dabei möglich. Die
Dateien werden per 'REQUEST' von 'MAPS' angefordert.
INSTALLATION:
Kopieren sie dieses Skript ins Rexx-Verzeichnis von ZP. Sie können
es dann an das Gadget [Bestellen] binden, indem Sie in der Datei
"maps/request.zp" den Text
.key FILE/A,SCREEN/A
.bra {
.ket }
Delete >NIL: {FILE} QUIET
Run >NIL: SYS:Rexxc/RX ZP:Rexx/RequestFC.zprx {SCREEN}
eintragen (bitte passen Sie ggf. den Pfad für 'RX' an).
AUTOR DIESES SKRIPTS:
Ralph Seichter Tel. : V +49-2233-70293 Q
Deutscher Ring 6 EMail: zodiac@darkness.gun.de
D-50354 Hürth
Verwenden Sie bitte nach Möglichkeit elektronische Post!
ANPASSEN DES SKRIPTS:
Am Anfang des Skripts können einige Parmeter eingestellt werden:
mapsadr - Adresse des MAPS-Dienstes
filelaenge - Stellt ein, ob die Filelängen im Fenster angezeigt
werden sollen. 0 = aus, 1 = ein
brettname - Stellt ein, ob die Brettnamen im Fenster angezeigt
werden sollen. 0 = aus, 1 = ein
brettnamelaenge - Stellt die anzahl der Zeichen des Brettnamens ein
fensterbreite = Stellt die Breite des Listview-Fensters ein
*/
mapsadr = 'MAPS' /* oder 'maps@<server>.<domain>' */
filelaenge = 1
brettname = 1
brettnamelaenge = 28
fensterbreite = 600
/********************************************************************/
/*** !!! BITTE AENDERN SIE UNTERHALB DIESER ZEILE NICHTS MEHR !!! ***/
/********************************************************************/
PARSE ARG zp
zp = COMPRESS(zp)
IF (zp = '') THEN
zp = 'ZPoint'
OPTIONS RESULTS
ADDRESS VALUE zp
IF (~SHOW('LIBRARIES', 'rexxtricks.library')) THEN
IF (~ADDLIB('rexxtricks.library', 0, -30, 0)) THEN DO
requestnotify 'Kann rexxtricks.library nicht öffnen!'
EXIT
END
IF (~SHOW('LIBRARIES','rexxsupport.library')) THEN
IF (~ADDLIB('rexxsupport.library', 0, -30, 0)) THEN DO
requestnotify 'Kann rexxsupport.library nicht öffnen!'
EXIT
END
/* Absender und Betreff auslesen */
messageinfo author
absender = RESULT
messageinfo fullsubject
betreff = RESULT
/* Prüfen, ob es eine 'Re: INHALT' oder eine */
/* 'POINT-INFO' Nachricht von 'MAPS' ist */
IF (~MATCHPATTERN(absender,'MAPS@#?')) THEN DO
requestnotify 'Keine MAPS-Nachricht!'
EXIT
END
IF (~MATCHPATTERN(betreff,'RE:#?INHALT') & ~MATCHPATTERN(betreff,'POINT-INFO')) THEN DO
requestnotify 'Keine MAPS-Nachricht!'
EXIT
END
/* Nachrichtenrumpf auslagern und Datei zum Lesen öffnen */
inname = 'T:1-RequestFC.tmp'
outname = 'T:2-RequestFC.tmp'
savemessagebody inname
IF (~RC) THEN DO
requestnotify 'Kann Nachricht nicht speichern!'
EXIT
END
IF (~READFILE(inname,'zeile')) THEN DO
requestnotify 'Kann ' || inname || ' nicht lesen!'
EXIT
END
/* Je nach Nachricht das richtige Unterprogramm aufrufen */
IF (MATCHPATTERN(betreff,'POINT-INFO')) THEN
CALL newfiles
ELSE
CALL inhalt
/* Auslagerungsdatei schließen und löschen */
dummy = DELETE(inname)
/* ListView-Fenster Definition */
windef.pubscreen = zp
windef.title = 'Zu requestende Dateien auswählen'
windef.postext = '_Requesten'
windef.negtext = '_Abbrechen'
windef.sort = 'TRUE'
windef.font = 'DEFAULT'
windef.width = fensterbreite
/* ListView-Fenster öffnen */
IF (VIEWLIST('string', 'windef', 'destvar')) THEN DO
IF (~OPEN('temp2', outname, 'WRITE')) THEN DO
BEEP()
EXIT
END
sendmail = 0
DO i = 0 TO destvar.count-1
x = LSEARCH(destvar.i, 'string')
IF (x ~= (-1)) THEN DO
dummy = WRITELN('temp2', request.x)
sendmail = 1
END
END
dummy = CLOSE('temp2')
IF (sendmail) THEN DO
writemessage 'FILE ' || outname || ' RECEIVER ' || mapsadr || ' SUBJECT REQUEST'
IF (RESULT = '') THEN DO
requestnotify 'Kann Bestellung nicht verschicken!'
EXIT
END
ELSE
requestnotify 'Bestellung verschickt.'
END
ELSE
dummy = DELETE(outname)
END
/* Skript beenden */
EXIT(0)
/* 'POINT-INFO' Nachricht von 'MAPS' nach requestbaren Files durchsuchen */
newfiles:
anzahl = 0
DO i = 0 TO zeile.count-1
IF LEFT(zeile.i,11) = 'File Name :' THEN DO
string.anzahl = LEFT(SUBSTR(zeile.i,13),31)
i = i+3
kbytes = SUBSTR(zeile.i,13)||'k'
i = i+1
aktuellbrett = SUBSTR(zeile.i,13)
i = i+1
request.anzahl = SUBSTR(zeile.i,13)
IF filelaenge THEN
string.anzahl = string.anzahl RIGHT(kbytes,5)
IF brettname THEN
string.anzahl = LEFT(aktuellbrett,brettnamelaenge) string.anzahl
anzahl = anzahl+1
END
END
string.count = anzahl
RETURN
/* 'RE: INHALT' von 'MAPS' nach requestbaren Files durchsuchen */
inhalt:
anzahl = 0
DO i = 0 TO zeile.count-1
IF LEFT(zeile.i,17) = 'Inhalt von Brett:' THEN
aktuellbrett = SUBSTR(zeile.i,19)
IF DATATYPE(WORD(zeile.i,3)) = 'NUM' THEN DO
string.anzahl = SUBSTR(zeile.i,47)
request.anzahl = aktuellbrett string.anzahl
string.anzahl = LEFT(string.anzahl,31)
IF filelaenge THEN
string.anzahl = string.anzahl RIGHT(WORD(zeile.i,3),4)||'k'
IF brettname THEN
string.anzahl = LEFT(aktuellbrett,brettnamelaenge) string.anzahl
anzahl = anzahl+1
END
END
string.count = anzahl
RETURN
/* EOF */